/**
 * @@fileholder
 */
package com.loooooo.pm2024.security.utils;

/**
 * @author ytx98@qq.com
 * @version 2017-04-19
 *
 */
public class PasswordUtils {

	// 简单（只包含数字或字母）
	static final String REGX1 = "^(?:\\d+|[a-zA-Z]+|[!@#$%^&*]+)$";

	// 中级（包含字母和数字）
	static final String REGX2 = "^(?![a-zA-z]+$)(?!\\d+$)(?![!@#$%^&*]+$)[a-zA-Z\\d!@#$%^&*]+$";

	// 复杂（同时包含数字，字母，特殊符号）
	static final String REGX3 = "^(?![a-zA-z]+$)(?!\\d+$)(?![!@#$%^&*_-]+$)(?![a-zA-z\\d]+$)(?![a-zA-z!@#$%^&*_-]+$)(?![\\d!@#$%^&*_-]+$)[a-zA-Z\\d!@#$%^&*_-]+$";

	/**
	 * 计算密码复杂度 大于0才是可用密码
	 * 
	 * @param passwd
	 * @return
	 */
	public static int strengthLevel(String passwd) {
		if (passwd == null || passwd.length() == 0) {
			return -1;
		}
		if (passwd.length() < 6) {
			return 0;
		}
		if (passwd.matches(REGX3)) {
			return 3;
		}
		if (passwd.matches(REGX2)) {
			return 2;
		}
		if (passwd.matches(REGX1)) {
			return 1;
		}
		return 0;
	}
}
